#include <iostream>
#include <vector>
#include <list>
#include <map>
using namespace std;
struct Point {
    int _x;
    int _y;
};
class Date {
public:
    Date(int year, int month, int day) : _year(year), _month(month), _day(day) {
//        cout << "Date(int year, int month, int day)" << endl;
    }
private:
    int _year;
    int _month;
    int _day;
};
int main() {
    int x1 = 1;
    int x2{2};
    int array1[]{1, 2, 3, 4, 5};
    int array2[5]{0};
    Point p{1, 2};//结构体初始化
    // C++11中列表初始化也可以适用于new表达式中
    int *pa = new int[4]{0};

    //Date以前的初始化：
    Date d1(2022, 1, 1);
    // C++11支持的列表初始化，这里会调用构造函数初始化
    Date d2{2022, 1, 2};
    Date d3 = {2022, 1, 3};

    //新增类型std::initializer_list
    auto il = {10, 20, 30};
    cout << typeid(il).name() << endl;

    vector<int> v = {1, 2, 3, 4};
    list<int> lt = {1, 2};
    // 这里{"sort", "排序"}会先初始化构造一个pair对象
    map<string, string> dict = {{"sort", "排序"}, {"insert", "插入"}};
    // 使用大括号对容器赋值
    v = {10, 20, 30};

    // decltype的一些使用使用场景
}
